import {Base} from '../../utils/base.js'

class Cart extends Base
{
  constructor() {
    super()
    this._storageKey = "cart"
  }

  /**
   * 添加到购物车方法
   * 先判断是否存在，如果不存在就新增；存在就将对应商品的购物车
   * 数量+1
   * 购物车数据是保存在本地缓存中
   */
  addCart(item, count)
  {
    var cartData = this.getCartData();
    var hasItemInfo = this._hasThatOne(item.id, cartData);

    if( hasItemInfo.index == -1) {
      item.count = 1
      item.selectedStatus = 1   //设置选中状态；添加到购物车时默认被选中
      cartData.push(item);
    } else {
      cartData[hasItemInfo.index].count += count;
    }

    wx.setStorageSync(this._storageKey, cartData)
  }

  /**
   * 从购物车获取商品总数量
   */
  getCartTotalCounts() {
    var count = 0;
    var cartData = this.getCartData();
    if( !cartData) return count;

    for(let i=0; i<cartData.length; i++) {
      count += cartData[i].count;
    }

    return count;
  }

  /**
   * 重新设置购物车数据
   */
  setCartData(data) {
    wx.setStorageSync(this._storageKey, data);
  }

  /**
   * 从本地缓存中获取购物车数据
   */
  getCartData()
  {
    var res = wx.getStorageSync(this._storageKey);
    if( !res) return []

    return res
  }

  /**
   * 判断对应的商品是否在购物车中
   * 如果找到对应的商品返回对应的 下标索引
   * 找不到对应商品的话返回索引下标 -1
   * id 为对应的商品ID
   */
  _hasThatOne(id, data)
  {
    var res = {
      "index": -1
    }

    var count = data.length;
    for(let i=0; i<count; i++) {
      if (data[i].id == id){
        res['index'] = i
        res['data'] = data[i]
        break;
      }
    }

    return res;
  }

}

export {Cart}